The present invention relates generally to an apparatus and process for controlling media storage devices, and more particularly to a method and process for configuring and controlling media storage devices to provide fault tolerant mirroring of data and to provide copying of data from one storage medium to another.
Prior art systems for providing fault tolerant mirroring and high-availability for on-line data in computer systems are well-known. Redundant arrays of independent disks (RAID) are used in many prior art applications to provide mirroring of on-line data on disk drives to provide redundant copies of data to increase the fault tolerance of computer systems.
Systems for providing fault tolerance for off-line data are less known. In a typical prior art computer system, a backup utility program is used to provide periodic off-line storage of data contained in on-line storage devices of the computer system. Typically, the backup utility program performs a backup operation to copy data contained on disks in one or more disk drives of a computer system onto a tape contained in a tape drive. Depending on the quantity of data to be copied, the backup operation may be fairly time consuming, and therefore, backup operations are typically performed during off hours, either automatically or under the control of an operator.
Typical backup utility programs also provide the capability to copy data from a tape drive to one or more disk drives. Such an operation is referred to as a restore operation and is used to restore data to the disks contained in the disk drives after the occurrence of a failure in the computer system that has caused a loss of data.
There are several drawbacks associated with typical prior art backup operations. First, if a tape or a tape drive fails during a backup operation, then the entire backup operation must be repeated. This is particularly a problem for back up operations of large quantities of data and for backup operations that are intended to run automatically during off hours. In the case of automatic backups, if there is no operator present to replace a failed tape or tape drive, then the opportunity to perform a backup operation may be missed.
Second, in typical prior art systems, when a failure or glitch occurs during a restore operation, the entire restore operation must be repeated. If the failure or glitch occurred due to a problem with a tape, it may not be possible to repeat the restore operation.
Third, there is often the desire to create multiple copies of backup data, so that for critical data, one or more copies may be stored off-site in addition to one copy that is stored on-site. Typical prior art systems do not provide the capability to easily produce multiple copies of backup data.
There are prior art devices that provide mirroring of off-line backup data. One prior art system provides the capability for mirroring within a backup application. The backup application opens two or more tape storage devices, and then accesses the tape storage devices in parallel to provide redundant storage of backup data. One disadvantage of this system is that it only offers redundant storage to users of the backup application. In some systems, multiple applications are used to access backup tape storage devices. If only one of these applications provides mirroring of data, then a common backup policy cannot be utilized across all of the applications.
In another prior art computer system, mirroring of backup data is implemented using specialized hardware. The specialized hardware includes a multiple tape drive system that presents itself to applications of the computer system as a single tape drive accessible over a standard Input/Output (I/O) bus such as a Small Computer System Interface (SCSI) bus. A backup application accesses the multiple tape drive system in the same manner as it accesses a single tape drive so that the mirroring of data is transparent to the backup application. One disadvantage of this system is that it is hardware specific. Only the specialized hardware can be used, preventing users from using their existing hardware or other hardware of their choice.
It is desirable that the above-described drawbacks of prior art backup operations be overcome in a manner that is essentially transparent to the backup utility program. It is also desirable to provide a solution to the above-described drawbacks for computer workstations and servers that utilize the Microsoft(copyright) Windows NT operating system.
Embodiments of the present invention overcome the drawbacks of prior art systems described above and provide a method and apparatus for mirroring off-line data in one or more storage devices utilizing a layered driver between a standard backup application and the storage devices.
In a first embodiment of the present invention, a computer system includes an application program, a plurality of storage devices, some of which form a mirror set, at least one storage driver that provides an interface between the application program and the plurality of storage devices, and a mirror driver that receives an I/O request from the application program requesting access to one of the plurality of storage devices, duplicates the I/O request to create a plurality of I/O requests, and sends the plurality of I/O requests to the storage driver so that each of a plurality of the storage devices receives and processes one I/O request.
In one version of the first embodiment, the computer system further comprises a mirror application that communicates with the mirror driver to establish which of the plurality of storage devices are to be part of the mirror set.
In another version of the first embodiment, the application is a backup application, the I/O request from the application program includes backup data that is to be stored in one of the plurality of storage devices, and the mirror driver sends a copy of the backup data to each of the plurality of devices in the mirror set so that a copy of the backup data is stored in each of the plurality of devices of the mirror set.
In another version of the first embodiment, the computer system includes a first buffer and a second buffer and the mirror driver in response to a read request is configured to read data from a first storage device of the mirror set and store it in the first buffer, and to read data from each of the remaining storage devices of the mirror set and store it in the second buffer.
In another version of the first embodiment, the mirror application is configured to, upon request by a user, send a request to the mirror driver requesting that data on a storage medium in a first storage device be copied to a storage medium on a second storage device.
In yet another version of the first embodiment, each of the plurality of storage devices is a tape drive.
A second embodiment of the present invention is directed to a data storage method for storing data in and retrieving data from a plurality of storage devices. The method includes steps of receiving a storage command for one of the plurality of storage devices, duplicating the storage command to create a plurality of storage commands, and sending one of the storage commands to each of the plurality of storage devices.
In one version of the second embodiment, the step of receiving includes a step of receiving backup data that is to be stored on the one of the plurality of storage devices, the step of duplicating includes a step of duplicating the backup storage data to create a plurality of copies of the backup data, and the step of sending includes a step of sending one copy of the backup data to each of the plurality of storage devices.
In another version of the second embodiment, the method further includes steps of reading data from a first device of the plurality of storage devices, storing data read from the first device of the plurality of storage devices in a first buffer, reading data from each of the plurality of devices other than the first device, and storing data read from each of the plurality of devices other than the first device in a second buffer.
In another version of the second embodiment, the method further includes steps of verifying that data was successfully read from the first device, and deleting the data stored in the second buffer.
In yet another version of the second embodiment, the method further includes steps of detecting that data was not successfully read from the first device, reading data from one of the plurality of devices other than the first device, and storing the data read from the one of the plurality of devices other than the first device in the first buffer.
In still another version of the second embodiment, the method further includes a step of copying data from a storage medium in a first of the plurality of storage devices to a storage medium in a second of the plurality of storage devices.
A third embodiment of the present invention is directed to a computer readable medium for containing a computer program for a computer system having a processor, an operating system, an application program, a plurality of storage devices, and at least one storage driver that acts as an interface between the application program and the plurality of storage devices, the computer program including instructions for implementing the method of the second embodiment described above in the computer system.